#ifndef _MELD_H
#define _MELD_H

#include "Card.h"
#include "Set.cpp"
#include "SetIter.cpp"
#include <iostream>
#include <string>

class Meld{
 protected:
  Set<Card> cardSet;

 public:
  Meld();
  Meld(Set<Card>);
  Meld(const Meld&);
  ~Meld();

  //Checkers
  bool isValid() const;
  int validify() const;
  int size() const;
  bool isEmpty() const;

  //Modifiers
  Meld* split(int);
  void add(const Meld&);
  void add(const Card&);

  //Getters
  Set<Card> getCardSet() const;
virtual  Set<Card> getValidCards();

  ostream& write(ostream &) const;
  ostream& printIndexes(ostream &) const;
};

ostream & operator<<(ostream & os, const Meld & is);

#endif
